home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 23.zip / BS1 part 23 / Vector Designer v1.0.adf / Sources / bobexample.S < prev    next >
Encoding:
Text File  |  1996-03-29  |  11.0 KB  |  618 lines

  1. *******************************************************
  2. ***   Bob  Vector example for TSB's Vectordesigner  ***
  3. ***   --------------------------------------------  ***
  4. ***                                                 ***
  5. ***               written by ALLOC                  ***
  6. ***                                                 ***
  7. *******************************************************
  8. ;---------------------------------------
  9. ; a  (return)
  10. ;(return)
  11. ; y  (return)
  12. ; jm (return)
  13.  
  14. >extern    "df0:readyobjects/bob",ball1,208
  15. >extern    "df0:readyobjects/mask",mask1,64 
  16. >extern    "df0:readyobjects/bobobject.b",vb_obj6,64 
  17. org    $30000
  18. load    $30000
  19.  
  20. clear:     MACRO
  21.     lea    $dff000,a5
  22.     move.l    ?1,$54(a5)
  23.     move.w    #?2,d0       ;x
  24.     move.w    #?3,d1       ;y
  25.     move.w    #$0,$66(a5)
  26.     move.w    #%0000000100000000,$40(a5)
  27.     move.w    #0,$42(a5)
  28.     lsl.w    #6,d1
  29.     or.w    d1,d0
  30.     move.w    d0,$58(a5)
  31.     ENDM
  32.  
  33.  
  34. m:
  35.     
  36.          lea    $dff000,a5
  37.         movem.l    d0-d7/a0-a6,-(a7)
  38.         moveq    #61,d0
  39.         lea    zero,a0
  40.         lea    8,a1
  41. copyzero:    move.l    (a1)+,(a0)+
  42.         dbf    d0,copyzero
  43.         move.l    #raus,$020
  44. raus:        move.w    #$2700,sr
  45.         adda    #6,a7
  46.         move.l    a7,sstack
  47.         move.l    #stackend,a7
  48.         move.w    $1c(a5),intbuff
  49.         move.w    #$7fff,$9a(a5)
  50.         move.w    #$7fff,$9c(a5)
  51.         bra.L    main        
  52. oson:        move.w    #$2700,sr
  53.         move.w    #$7fff,$9a(a5)
  54.         move.w    intbuff(pc),d0
  55.         ori.w    #$8000,d0
  56.         move.w    d0,$9a(a5)
  57.         moveq    #61,d0
  58.         lea    zero(pc),a0
  59.         lea    8,a1
  60. zeroback:    move.l    (a0)+,(a1)+
  61.         dbf    d0,zeroback
  62.         move.l    sstack(pc),a7
  63.         move.w    #0,sr
  64.         movem.l    (a7)+,d0-d7/a0-a6
  65.         rts
  66. grname:        dc.b    "graphics.library",0
  67.         align    4
  68.  
  69. zero:        blk.l    62,0
  70.         align    4
  71. sstack:        dc.l    0
  72. stack:        blk.b    4048
  73. stackend:
  74.         align    4
  75.  
  76. intbuff:    dc.l    0
  77.         align    4
  78. main:        
  79. **********************
  80. *** Voreinstellung ***
  81. **********************
  82.  
  83.     lea    ball1+192,a0
  84.     lea    tsbcolors,a1
  85.     moveq    #7,d0
  86. tsbcolorset:
  87.     move.w    (a0)+,2(a1)
  88.     add.l    #4,a1
  89.     dbf    d0,tsbcolorset    
  90.  
  91.     lea    $dff000,a5
  92.     move.l    #$ffffffff,$44(a5)
  93.     move.w    #%1000010000000000,$96(a5)
  94.     move.w    #%0000011111111111,$96(a5)
  95.     move.l  #copperlist,$80(a5)
  96.      clr.w   $88(a5)
  97.     move.w  #%1000011111000000,$96(a5)
  98.     lea    hauptloop(pc),a4
  99.     move.l    a4,$6c        
  100.     move.w    #$c010,$9a(a5)
  101.     move.w    #$2000,sr
  102.  
  103. ************
  104. *** Wait ***
  105. ************
  106.  
  107. wait:    
  108.     move.l    $dff004,d0
  109.     and.l    #$1ff00,d0
  110.     cmp.l    #$ff00,d0
  111.     ble.s    wait
  112.     moveq    #0,d0
  113.     bsr    vballs
  114.     move.l    workplane,a0
  115.     move.l    showplane,workplane
  116.     move.l    a0,showplane    
  117.     btst    #6,$bfe001
  118.     beq    end
  119.     bra    wait        
  120. **************************
  121. ******    Hauptteil  *******
  122. **************************
  123.  
  124. hauptloop:
  125.     move.w    #$10,$dff09c        
  126.     movem.l    d0-d7/a0-a6,-(a7)
  127.     lea    bob1adrs,a0
  128.     move.l    showplane,d0
  129.     moveq    #2,d7
  130. planesset:
  131.     swap    d0
  132.     move.w    d0,2(a0)
  133.     swap    d0
  134.     move.w    d0,6(a0)
  135.     add.l    #8,a0
  136.     add.l    #[200*40],d0
  137.     dbf    d7,planesset
  138. hplend:
  139.     movem.l    (a7)+,d0-d7/a0-a6
  140.     rte                
  141.  
  142.  
  143. workplane:
  144.     dc.l    $60000
  145. showplane:
  146.     dc.l    $70000
  147.  
  148.  
  149.  
  150.  
  151. ***************
  152. *** E N D E ***
  153. ***************
  154.  
  155.  
  156. end:        
  157.         lea    $dff000,a5
  158.         move.l    4,a6
  159.         lea    grname(pc),a1
  160.         clr.l    d0
  161.         jsr    -408(a6)
  162.         move.l    d0,a4
  163.         move.l    38(a4),$80(a5)
  164.         clr.w    $88(a5)
  165.         move.w    #$83f0,$96(a5)
  166.         jmp    oson
  167.         
  168. copperlist:
  169.                 dc.w    $008e,$2981,$0090,$29c1
  170.         dc.w    $0092,$0038,$0094,$00d0
  171.          dc.w    $0108,$0000,$010a,$0000
  172.              dc.w    $0102,$0000,$0104,$0024
  173.         dc.w    $120,$0,$122,$0
  174.         dc.w    $124,$0,$126,$0
  175.         dc.w    $128,$0,$12a,$0
  176.         dc.w    $12c,$0,$12e,$0
  177.         dc.w    $130,$0,$132,$0
  178.         dc.w    $134,$0,$136,$0
  179.         dc.w    $138,$0,$13a,$0
  180.         dc.w    $13c,$0,$13e,$0
  181.         dc.w    $100,$0200
  182.         dc.w    $9c,$8010
  183. tsbcolors:
  184.         dc.w    $180,0,$182,$125
  185.         dc.w    $184,0,$186,0
  186.         dc.w    $188,0,$18a,0
  187.         dc.w    $18c,0,$18e,0
  188.         dc.w    $190,0,$192,0
  189.         dc.w    $194,0,$196,0
  190.         dc.w    $198,0,$19a,0
  191.         dc.w    $19c,0,$19e,0
  192.         
  193.         dc.w    $4809,$fffe
  194. bob1adrs:
  195.         dc.w    $00e0,$0006,$00e2,$4000
  196.         dc.w    $00e4,$0006,$00e6,$4c00
  197.         dc.w    $00e8,$0006,$00ea,$5800
  198.         dc.w    $4a09,$fffe
  199.         dc.w    $100,$3200
  200.         dc.w    $ffe1,$fffe
  201.         dc.w    $0809,$fffe
  202.         dc.w    $100,$0200
  203.         dc.w    $ffff,$fffe
  204.  
  205.  
  206.  
  207.  
  208. *********************
  209. ****** 3D Bobs ******
  210. ******   by    ******
  211. ******  ALLOC  ******
  212. ****** march 90****** 
  213. *********************
  214. vb_hi:
  215.     dc.w    0
  216. vb_low:
  217.     dc.w    0
  218.  
  219.  
  220. vballs:
  221.     movem.l    a0-a6/d0-d7,-(a7)
  222.     clr.w    vb_hi
  223.     move.w    #400,vb_low
  224.     lea    vb_pointer(pc),a0
  225.     lsl.l    #4,d0
  226.     add.l    d0,a0
  227.     move.l    workplane,d0
  228.     clear    d0,20,600
  229.     move.l    (a0),a4
  230.     move.l    8(a0),a6
  231.     add.w    #2,6(a6)
  232.     add.w    #2,8(a6)
  233.     add.w    #2,10(a6)
  234.     and.w    #$1ff,6(a6)
  235.     and.w    #$1ff,8(a6)
  236.     and.w    #$1ff,10(a6)
  237.  
  238. vb_1:
  239.     lea    pic1,a5
  240.     move.w    (a4)+,d0
  241.     cmp.w    #$7fff,d0
  242.     beq.L    vb_2
  243.     move.w    (a4)+,d1
  244.     move.w    (a4)+,d2
  245.     move.w    6(a6),a0
  246.     move.w    8(a6),a1
  247.     move.w    10(a6),a2
  248.     bsr    rotate
  249.     add.w    (a6),d0
  250.     sub.w    2(a6),d1
  251.     neg.w    d1
  252.     add.w    4(a6),d2
  253.     ext.l    d0
  254.     ext.l    d1
  255.     ext.l    d2
  256.     asl.l    #8,d0
  257.     asl.l    #8,d1
  258.     move.l    d2,d3
  259.     add.l    #230,d3
  260.     divs    d3,d0
  261.     divs    d3,d1
  262.     add.w    #159,d0
  263.     add.w    #88,d1
  264.     moveq    #0,d7
  265.     move.l    d2,d7
  266.     cmp.w    vb_low,d7
  267.     bge.s    vb_10
  268.     move.w    d7,vb_low
  269. vb_10:
  270.     cmp.w    vb_hi,d7
  271.     ble.s    vb_11
  272.     move.w    d7,vb_hi
  273. vb_11:
  274.  
  275.     mulu    #322,d7
  276.     add.l    d7,a5
  277.     move.w    (a5),d7
  278.     add.w    #8,(a5)
  279.     addq.l    #2,d7
  280.     move.w    d0,(a5,d7.w)
  281.     move.w    d1,2(a5,d7.w)
  282.     move.w    (a4)+,4(a5,d7.w)
  283.     move.w    d2,6(a5,d7.w)
  284.     bra.L    vb_1
  285. vb_2:
  286.  
  287.     
  288. vb_20:
  289.     lea    pic1,a5
  290.     move.l    a5,a4
  291.     moveq    #0,d7
  292.     move.w    vb_low,d7
  293.     mulu    #322,d7
  294.     add.l    d7,a4
  295.     sub.l    #322,a4
  296.     moveq    #0,d7
  297.     move.w    vb_hi,d7
  298.     mulu    #322,d7
  299.     add.l    d7,a5
  300.     add.l    #322,a5
  301.     move.l    a5,a6
  302. vb_21:
  303.     sub.l    #322,a6
  304.     cmp.l    a6,a4
  305.     beq    vb_23
  306.     move.l    a6,a5
  307.     tst.w    (a5)
  308.     beq.s    vb_21
  309.     move.w    (a5),d5
  310.     lsr.w    #3,d5
  311.     subq    #1,d5
  312.     clr.w    (a5)
  313.     adda.l    #2,a5
  314.  
  315. vb_22:
  316.     move.w    (a5)+,d0
  317.     move.w    (a5)+,d1
  318.     move.w    (a5)+,d2
  319.     move.w    (a5)+,d3
  320.     moveq    #0,d3
  321.     bsr    bobdraw
  322.     dbf    d5,vb_22
  323.     bra    vb_21
  324. vb_23:
  325.     movem.l    (a7)+,a0-a6/d0-d7
  326.     rts
  327.  
  328.  
  329.  
  330. *****************
  331. **** Bobdraw ****
  332. *****************
  333. ;d0,d1  x,y
  334. ;d2,d3    table,depth     
  335. bobdraw:
  336.     movem.l    d4-d7/a0-a6,-(a7)
  337. firstwait:
  338.     btst    #14,$dff002
  339.     bne    firstwait    
  340.     lea    balltypes(pc),a0
  341.     lsl.w    #2,d2
  342.     move.l    (a0,d2.w),a0
  343.     lsl.w    #3,d3
  344.     move.l    16(a0,d3.w),a1
  345.     move.l    20(a0,d3.w),a2
  346.     move.l    workplane,a3
  347.     mulu    #40,d1
  348.     add.l    d1,a3
  349.     moveq    #0,d1
  350.     move.w    d0,d1
  351.     and.w    #$f,d0
  352.     lsl.w    #8,d0
  353.     lsl.w    #4,d0
  354.     and.w    #$fff0,d1
  355.     lsr.w    #3,d1
  356.     add.l    d1,a3
  357.     lea    $dff000,a5
  358.     move.w    #$fe2,d2
  359.     or.w    d0,d2
  360.     move.w    d2,$40(a5)
  361.     move.w    d0,$42(a5)
  362.     move.l    a3,$48(a5)
  363.     move.l    a2,$4c(a5)    
  364.     move.l    a1,$50(a5)
  365.     move.l    a3,$54(a5)
  366.     move.l    (a0),d0
  367.     neg.w    d0
  368.     add.w    #40,d0
  369.     move.w    d0,$60(a5)
  370.     move.w    d0,$66(a5)
  371.     move.l    #0,$62(a5)
  372.     move.l    (a0),d0
  373.     lsr.w    #1,d0
  374.     move.l    4(a0),d1
  375.     lsl.w    #6,d1
  376.     or.w    d1,d0
  377.     move.l    8(a0),d7
  378.     move.l    12(a0),d2
  379. bobblitt:
  380.     move.w    d0,$58(a5)    
  381.     add.l    #$1f40,a3    
  382.     add.l    d2,a1
  383.     move.l    a1,$50(a5)
  384.     move.l    a3,$54(a5)
  385.     move.l    a3,$48(a5)
  386.     move.l    a2,$4c(a5)
  387.     dbf    d7,bobblitt
  388.         
  389.  
  390.     movem.l    (a7)+,d4-d7/a0-a6
  391.     rts
  392. ***************
  393. **** Balls ****
  394. ***************
  395.  
  396. balltypes:
  397.  
  398.     dc.l    ball1table
  399.  
  400.  
  401. ball1table:
  402.     dc.l    4,16,2,64    ;x,y,depth,length
  403.     dc.l    ball1,mask1
  404.     dc.l    ball1,mask1
  405.     dc.l    ball1,mask1
  406.     dc.l    ball1,mask1
  407.     dc.l    ball1,mask1
  408.     dc.l    ball1,mask1
  409.     dc.l    ball1,mask1
  410.     dc.l    ball1,mask1
  411.     dc.l    ball1,mask1
  412.     dc.l    ball1,mask1
  413.     dc.l    ball1,mask1
  414.     dc.l    ball1,mask1
  415.     dc.l    ball1,mask1
  416.     dc.l    ball1,mask1
  417.     dc.l    ball1,mask1
  418.     dc.l    ball1,mask1
  419.     dc.l    ball1,mask1
  420.     dc.l    ball1,mask1
  421.     dc.l    ball1,mask1
  422.     dc.l    ball1,mask1
  423.  
  424.  
  425. ****************
  426. **** VB OBJ ****
  427. ****************
  428. vb_pointer:
  429.     dc.l    vb_obj6,0,vb_pos6,vb_path6
  430.  
  431.  
  432.  
  433. vb_obj6:
  434.     blk.w    1000,$7fff
  435.  
  436.  
  437. vb_pos6:
  438.     dc.w    0,0,60,0,0,0    ;x,y,z,xa,ya,za
  439.  
  440. vb_path6:
  441.     dc.w    0,0,0,4,0,0    ;Veraenderungen
  442.     dc.w    128,0        ;timer,pointer
  443.     dc.w    0,0,150    ;x,y,z start
  444.     dc.w    0,0,0        ;xa,ya,za start
  445.     dc.w    256,0,0,0,4,0,0,0
  446.     dc.w    256,0,0,0,0,8,0,0
  447.     dc.w    256,0,0,0,0,0,4,0
  448.     dc.w    256,0,0,0,8,0,0,0
  449.     dc.w    256,0,0,0,0,4,0,0
  450.     dc.w    256,0,0,0,0,0,8,0
  451.     dc.w    256,0,0,0,0,4,4,0
  452.     dc.w    256,0,0,0,0,0,8,0
  453.     dc.w    256,0,0,0,0,8,8,0
  454.     dc.w    128,0,0,0,0,0,8,0
  455.     dc.w    $ffff
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462. *********************************************************
  463. ***********************************************************
  464.  
  465.  
  466.  
  467.  
  468. ********************
  469. *** 3-D Rotieren ***
  470. ********************
  471. ;d0,d1,d2   x,y,z
  472. ;a0,a1,a2   umx,umy,umz
  473.  
  474. rotate:
  475.     movem.l    d3-d7/a3-a6,-(a7)
  476.     lea    costable(pc),a3
  477.     lea    sintable(pc),a4
  478.     cmp.w    #0,a2
  479.     beq    rot_1
  480.     move.w    d0,d4
  481.     move.w    d1,d5
  482.     muls    (a3,a2.w),d4
  483.     muls    (a4,a2.w),d5
  484.     sub.l    d5,d4
  485.     asr.l    #8,d4
  486.     move.w    d4,d6
  487.     move.w    d0,d4
  488.     move.w    d1,d5
  489.     muls    (a4,a2.w),d4
  490.     muls    (a3,a2.w),d5
  491.     add.l    d4,d5
  492.     asr.l    #8,d5
  493.     move.w    d5,d1
  494.     move.w    d6,d0
  495. rot_1:
  496.     cmp.w    #0,a0
  497.     beq    rot_2
  498.     move.w    d2,d4
  499.     move.w    d1,d5
  500.     muls    (a3,a0.w),d4
  501.     muls    (a4,a0.w),d5
  502.     sub.l    d5,d4
  503.     asr.l    #8,d4
  504.     move.w    d4,d6
  505.     move.w    d2,d4
  506.     move.w    d1,d5
  507.     muls    (a4,a0.w),d4
  508.     muls    (a3,a0.w),d5
  509.     add.l    d4,d5
  510.     asr.l    #8,d5
  511.     move.w    d5,d1
  512.     move.w    d6,d2
  513. rot_2:
  514.     cmp.w    #0,a1
  515.     beq    rot_end
  516.     move.w    d0,d4
  517.     move.w    d2,d5
  518.     muls    (a3,a1.w),d4
  519.     muls    (a4,a1.w),d5
  520.     sub.l    d5,d4
  521.     asr.l    #8,d4
  522.     move.w    d4,d6
  523.     move.w    d0,d4
  524.     move.w    d2,d5
  525.     muls    (a4,a1.w),d4
  526.     muls    (a3,a1.w),d5
  527.     add.l    d4,d5
  528.     asr.l    #8,d5
  529.     move.w    d5,d2
  530.     move.w    d6,d0
  531. rot_end:
  532.     movem.l    (a7)+,d3-d7/a3-a6
  533.     rts
  534.  
  535.  
  536. costable:
  537.  
  538.     dc.w    256,256,256,255,255,254,253,252
  539.     dc.w    251,250,248,247,245,243,241,239
  540.     dc.w    237,234,231,229,226,223,220,216
  541.     dc.w    213,209,206,202,198,194,190,185
  542.     dc.w    181,177,172,167,162,157,152,147
  543.     dc.w    142,137,132,126,121,115,109,104
  544.     dc.w    98,92,86,80,74,68,62,56
  545.     dc.w    50,44,38,31,25,19,13,6
  546.     dc.w    0,-5,-12,-18,-24,-30,-37,-43
  547.     dc.w    -49,-55,-61,-67,-73,-79,-85,-91
  548.     dc.w    -97,-103,-108,-114,-120,-125,-131,-136
  549.     dc.w    -141,-146,-151,-156,-161,-166,-171,-176
  550.     dc.w    -180,-184,-189,-193,-197,-201,-205,-208
  551.     dc.w    -212,-215,-219,-222,-225,-228,-230,-233
  552.     dc.w    -236,-238,-240,-242,-244,-246,-247,-249
  553.     dc.w    -250,-251,-252,-253,-254,-254,-255,-255
  554.     dc.w    -255,-255,-255,-254,-254,-253,-252,-251
  555.     dc.w    -250,-249,-247,-246,-244,-242,-240,-238
  556.     dc.w    -236,-233,-230,-228,-225,-222,-219,-215
  557.     dc.w    -212,-208,-205,-201,-197,-193,-189,-184
  558.     dc.w    -180,-176,-171,-166,-161,-156,-151,-146
  559.     dc.w    -141,-136,-131,-125,-120,-114,-108,-103
  560.     dc.w    -97,-91,-85,-79,-73,-67,-61,-55
  561.     dc.w    -49,-43,-37,-30,-24,-18,-12,-5
  562.     dc.w    0,6,13,19,25,31,38,44
  563.     dc.w    50,56,62,68,74,80,86,92
  564.     dc.w    98,104,109,115,121,126,132,137
  565.     dc.w    142,147,152,158,162,167,172,177
  566.     dc.w    181,185,190,194,198,202,206,209
  567.     dc.w    213,216,220,223,226,229,231,234
  568.     dc.w    237,239,241,243,245,247,248,250
  569.     dc.w    251,252,253,254,255,255,256,256
  570.  
  571.  
  572.  
  573. sintable:
  574.  
  575.     dc.w    0,-5,-12,-18,-24,-30,-37,-43
  576.     dc.w    -49,-55,-61,-67,-73,-79,-85,-91
  577.     dc.w    -97,-103,-108,-114,-120,-125,-131,-136
  578.     dc.w    -141,-146,-151,-156,-161,-166,-171,-176
  579.     dc.w    -180,-184,-189,-193,-197,-201,-205,-208
  580.     dc.w    -212,-215,-219,-222,-225,-228,-230,-233
  581.     dc.w    -236,-238,-240,-242,-244,-246,-247,-249
  582.     dc.w    -250,-251,-252,-253,-254,-254,-255,-255
  583.     dc.w    -255,-255,-255,-254,-254,-253,-252,-251
  584.     dc.w    -250,-249,-247,-246,-244,-242,-240,-238
  585.     dc.w    -236,-233,-230,-228,-225,-222,-219,-215
  586.     dc.w    -212,-208,-205,-201,-197,-193,-189,-184
  587.     dc.w    -180,-176,-171,-166,-161,-156,-151,-146
  588.     dc.w    -141,-136,-131,-125,-120,-114,-108,-103
  589.     dc.w    -97,-91,-85,-79,-73,-67,-61,-55
  590.     dc.w    -49,-43,-37,-30,-24,-18,-12,-5
  591.     dc.w    0,6,13,19,25,31,38,44
  592.     dc.w    50,56,62,68,74,80,86,92
  593.     dc.w    98,104,109,115,121,126,132,137
  594.     dc.w    142,147,152,158,162,167,172,177
  595.     dc.w    181,185,190,194,198,202,206,209
  596.     dc.w    213,216,220,223,226,229,231,234
  597.     dc.w    237,239,241,243,245,247,248,250
  598.     dc.w    251,252,253,254,255,255,256,256
  599.     dc.w    256,256,256,255,255,254,253,252
  600.     dc.w    251,250,248,247,245,243,241,239
  601.     dc.w    237,234,231,229,226,223,220,216
  602.     dc.w    213,209,206,202,198,194,190,185
  603.     dc.w    181,177,172,167,162,157,152,147
  604.     dc.w    142,137,132,126,121,115,109,104
  605.     dc.w    98,92,86,80,74,68,62,56
  606.     dc.w    50,44,38,31,25,19,13,6
  607.  
  608.  
  609.  
  610. ball1:
  611.     blk.b    208,0    
  612.  
  613. mask1:
  614.     blk.b    64,0
  615. pic1:
  616.     blk.b    120000,0
  617.  
  618.